<?php

// 发立得信息发布系统房屋信息版(php+mysql) V1.0
// 演示地址: http://fang.chalide.cn
// 文件路径: sys/tutu.php
// 文件大小: 15503 字节
// 最后修改时间: 2025-05-23 20:09:32
// 作者: yujianyue
// 邮件: 15058593138@qq.com
// 版权所有,保留发行权和署名权
/**
 * 本文件功能：图片管理
 * 版权声明：保留发行权和署名权
 * 作者信息：15058593138@qq.com
 */

// 获取当前用户
$curr_user = check_login(USER_TYPE_ADMIN);
$db = DB::getInstance();

// 处理AJAX请求
if (isset($_GET['act'])) {
    $act = $_GET['act'];
    
    switch ($act) {
        // 获取图片列表
        case 'list':
            $page = isset($_POST['page']) ? intval($_POST['page']) : 1;
            $limit = 12; // 每页显示更多图片
            
            // 构建查询条件
            $where = '1=1';
            
            if (!empty($_POST['info_id'])) {
                $info_id = intval($_POST['info_id']);
                $where .= " AND info_id = $info_id";
            }
            
            // 查询总数
            $total = $db->count('imgs', $where);
            
            // 分页参数
            $pagination = get_pagination($total, $page, $limit);
            
            // 查询列表
            $sql = "SELECT i.*, f.title as info_title 
                    FROM imgs i 
                    LEFT JOIN info f ON i.info_id = f.id 
                    WHERE $where 
                    ORDER BY i.id DESC 
                    LIMIT {$pagination['offset']}, {$pagination['limit']}";
            
            $list = $db->getAll($sql);
            
            // 返回数据
            json_msg(1, '获取成功', [
                'list' => $list,
                'page' => $pagination['page'],
                'total_page' => $pagination['total_page'],
                'total' => $pagination['total']
            ]);
            break;
            
        // 删除图片
        case 'delete':
            if (empty($_POST['id'])) {
                json_msg(0, '参数错误');
            }
            
            $id = intval($_POST['id']);
            
            // 检查图片是否存在
            $sql = "SELECT id, path FROM imgs WHERE id = $id";
            $img = $db->getRow($sql);
            
            if (!$img) {
                json_msg(0, '图片不存在');
            }
            
            // 删除文件
            if (file_exists($img['path'])) {
                @unlink($img['path']);
            }
            
            // 删除记录
            $result = $db->delete('imgs', "id = $id");
            
            if ($result) {
                json_msg(1, '删除成功');
            } else {
                json_msg(0, '删除失败，请稍后重试');
            }
            break;
            
        // 批量删除
        case 'batch_delete':
            if (empty($_POST['ids'])) {
                json_msg(0, '参数错误');
            }
            
            $ids = $_POST['ids'];
            
            // 处理IDs
            if (is_array($ids)) {
                // 如果是数组格式
                $id_str = implode(',', array_map('intval', $ids));
            } else {
                // 如果是字符串格式（逗号分隔）
                $id_arr = explode(',', $ids);
                $id_str = implode(',', array_map('intval', $id_arr));
            }
            
            // 验证处理后的ID字符串
            if (empty($id_str)) {
                json_msg(0, '请选择要删除的图片');
            }
            
            // 获取图片路径
            $sql = "SELECT path FROM imgs WHERE id IN ($id_str)";
            $imgs = $db->getAll($sql);
            
            // 删除文件
            foreach ($imgs as $img) {
                if (file_exists($img['path'])) {
                    @unlink($img['path']);
                }
            }
            
            // 删除记录
            $result = $db->delete('imgs', "id IN ($id_str)");
            
            if ($result) {
                json_msg(1, '删除成功');
            } else {
                json_msg(0, '删除失败，请稍后重试');
            }
            break;
            
        // 获取图片详情
        case 'detail':
            if (empty($_POST['id'])) {
                json_msg(0, '参数错误');
            }
            
            $id = intval($_POST['id']);
            
            // 查询图片信息
            $sql = "SELECT i.*, f.title as info_title, f.cname, f.cmobi 
                    FROM imgs i 
                    LEFT JOIN info f ON i.info_id = f.id 
                    WHERE i.id = $id";
            
            $img = $db->getRow($sql);
            
            if (!$img) {
                json_msg(0, '图片不存在');
            }
            
            // 格式化时间
            $img['add_time'] = format_datetime($img['add_time'], 'Y-m-d H:i:s');
            
            json_msg(1, '获取成功', $img);
            break;
            
        default:
            json_msg(0, '未知操作');
    }
    
    exit;
}
include './inc/head.php';
?>

<div class="tutu-container" style="background:#fff;padding:20px;border-radius:5px;box-shadow:0 1px 3px rgba(0,0,0,0.1);">
    <div class="top-bar">
        <div class="title" style="display:flex;justify-content:space-between;align-items:center;">
            <h2 style="margin:0;">图片管理</h2>
            <button type="button" id="batch-delete-btn" class="btn btn-danger">批量删除</button>
        </div>
        
        <div class="search-bar" style="margin-top:15px;display:flex;">
            <div class="search-item" style="margin-right:10px;">
                <input type="text" id="info-id" class="form-control" placeholder="输入信息ID">
            </div>
            
            <div class="search-item">
                <button type="button" id="search-btn" class="btn btn-primary">搜索</button>
            </div>
        </div>
    </div>
    
    <div class="tutu-list" style="margin-top:20px;">
        <div id="img-list" class="card-list"></div>
        <div id="pagination" style="margin-top:20px;"></div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // 加载图片列表
    loadImgList();
    
    // 搜索按钮点击事件
    document.getElementById('search-btn').addEventListener('click', function() {
        loadImgList();
    });
    
    // 回车搜索
    document.getElementById('info-id').addEventListener('keydown', function(e) {
        if (e.keyCode === 13) {
            loadImgList();
        }
    });
    
    // 批量删除按钮点击事件
    document.getElementById('batch-delete-btn').addEventListener('click', function() {
        batchDelete();
    });
});

// 加载图片列表
function loadImgList(page) {
    page = page || 1;
    
    // 获取搜索参数
    const infoId = document.getElementById('info-id').value;
    
    // 显示加载中
    document.getElementById('img-list').innerHTML = '<div style="text-align:center;padding:20px;">加载中...</div>';
    
    // 请求数据
    ajax({
        url: 'sys.php?do=tutu&act=list',
        method: 'POST',
        data: {
            page: page,
            info_id: infoId
        },
        success: function(res) {
            if (res.code === 1) {
                // 渲染列表
                renderImgList(res.data.list);
                
                // 渲染分页
                document.getElementById('pagination').innerHTML = renderPagination(res.data.page, res.data.total_page);
                
                // 绑定分页事件
                bindPaginationEvents(function(page) {
                    loadImgList(page);
                });
                
                // 绑定操作事件
                bindImgOperationEvents();
            } else {
                document.getElementById('img-list').innerHTML = '<div style="text-align:center;padding:20px;">暂无数据</div>';
                document.getElementById('pagination').innerHTML = '';
                showToast(res.msg);
            }
        },
        error: function() {
            document.getElementById('img-list').innerHTML = '<div style="text-align:center;padding:20px;">加载失败，请刷新重试</div>';
            document.getElementById('pagination').innerHTML = '';
            showToast('网络错误，请稍后重试');
        }
    });
}

// 渲染图片列表
function renderImgList(list) {
    if (!list || list.length === 0) {
        document.getElementById('img-list').innerHTML = '<div style="text-align:center;padding:20px;">暂无数据</div>';
        return;
    }
    
    let html = '<div style="display:flex;flex-wrap:wrap;">';
    
    for (let i = 0; i < list.length; i++) {
        const item = list[i];
        
        html += '<div class="img-item" style="width:200px;margin:10px;border:1px solid #ddd;border-radius:4px;overflow:hidden;">';
        html += '<div style="position:relative;">';
        html += '<img src="' + item.path + '" style="width:100%;height:150px;object-fit:cover;">';
        html += '<div class="img-check" style="position:absolute;top:5px;left:5px;z-index:1;">';
        html += '<input type="checkbox" class="check-item" value="' + item.id + '">';
        html += '</div>';
        html += '</div>';
        html += '<div style="padding:10px;">';
        html += '<div style="margin-bottom:5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;" title="' + (item.info_title || '未知信息') + '">';
        html += '所属信息: ' + (item.info_title || '未知信息');
        html += '</div>';
        html += '<div style="display:flex;justify-content:space-between;">';
        html += '<a href="javascript:;" class="btn-detail" data-id="' + item.id + '">详情</a>';
        html += '<a href="javascript:;" class="btn-delete" data-id="' + item.id + '">删除</a>';
        html += '</div>';
        html += '</div>';
        html += '</div>';
    }
    
    html += '</div>';
    
    document.getElementById('img-list').innerHTML = html;
}

// 绑定图片操作事件
function bindImgOperationEvents() {
    // 详情按钮
    const detailBtns = document.querySelectorAll('.btn-detail');
    for (let i = 0; i < detailBtns.length; i++) {
        detailBtns[i].addEventListener('click', function() {
            const id = this.getAttribute('data-id');
            showImgDetail(id);
        });
    }
    
    // 删除按钮
    const deleteBtns = document.querySelectorAll('.btn-delete');
    for (let i = 0; i < deleteBtns.length; i++) {
        deleteBtns[i].addEventListener('click', function() {
            const id = this.getAttribute('data-id');
            
            // 确认删除
            confirm('确定要删除该图片吗？', function() {
                // 删除图片
                ajax({
                    url: 'sys.php?do=tutu&act=delete',
                    method: 'POST',
                    data: { id: id },
                    success: function(res) {
                        showToast(res.msg);
                        if (res.code === 1) {
                            // 重新加载列表
                            loadImgList(document.querySelector('.pagination .current') ? 
                                parseInt(document.querySelector('.pagination .current').textContent) : 1);
                        }
                    },
                    error: function() {
                        showToast('网络错误，请稍后重试');
                    }
                });
            });
        });
    }
}

// 批量删除
function batchDelete() {
    // 获取选中的ID
    const checkItems = document.querySelectorAll('.check-item:checked');
    const ids = [];
    
    for (let i = 0; i < checkItems.length; i++) {
        ids.push(checkItems[i].value);
    }
    
    if (ids.length === 0) {
        showToast('请选择要删除的图片');
        return;
    }
    
    // 将ids数组转换为字符串
    var idsStr = ids.join(',');
    
    // 确认删除
    showModal('确认删除', '确定要删除选中的图片吗？', [
        {
            text: '取消',
            class: 'btn btn-cancel',
            onClick: function() {
                const mask = document.querySelector('.mask');
                if (mask) {
                    document.body.removeChild(mask);
                }
            }
        },
        {
            text: '确定',
            class: 'btn btn-primary',
            onClick: function() {
                // 关闭模态框
                const mask = document.querySelector('.mask');
                if (mask) {
                    document.body.removeChild(mask);
                }
                
                // 批量删除
                ajax({
                    url: 'sys.php?do=tutu&act=batch_delete',
                    method: 'POST',
                    data: { ids: idsStr },
                    success: function(res) {
                        showToast(res.msg);
                        if (res.code === 1) {
                            // 重新加载列表
                            loadImgList(document.querySelector('.pagination .current') ? 
                                parseInt(document.querySelector('.pagination .current').textContent) : 1);
                        }
                    },
                    error: function() {
                        showToast('网络错误，请稍后重试');
                    }
                });
            }
        }
    ]);
}

// 显示图片详情
function showImgDetail(id) {
    // 显示加载中
    showModal('图片详情', '<div style="text-align:center;padding:20px;">加载中...</div>', []);
    
    // 请求详情
    ajax({
        url: 'sys.php?do=tutu&act=detail',
        method: 'POST',
        data: { id: id },
        success: function(res) {
            if (res.code === 1) {
                // 渲染详情
                renderImgDetail(res.data);
            } else {
                showToast(res.msg);
            }
        },
        error: function() {
            showToast('网络错误，请稍后重试');
        }
    });
}

// 渲染图片详情
function renderImgDetail(img) {
    let html = '<div class="img-detail">';
    
    // 图片
    html += '<div style="text-align:center;margin-bottom:15px;">';
    html += '<img src="' + img.path + '" style="max-width:100%;max-height:300px;">';
    html += '</div>';
    
    // 基本信息
    html += '<div style="margin-bottom:15px;padding:10px;background:#f5f5f5;border-radius:4px;">';
    html += '<p><strong>图片ID：</strong>' + img.id + '</p>';
    html += '<p><strong>路径：</strong>' + img.path + '</p>';
    html += '<p><strong>所属信息ID：</strong>' + img.info_id + '</p>';
    html += '<p><strong>所属信息标题：</strong>' + (img.info_title || '未知') + '</p>';
    html += '<p><strong>排序：</strong>' + img.sort + '</p>';
    html += '<p><strong>上传时间：</strong>' + img.add_time + '</p>';
    html += '</div>';
    
    // 联系方式
    if (img.cname || img.cmobi) {
        html += '<div style="margin-bottom:15px;padding:10px;background:#f5f5f5;border-radius:4px;">';
        html += '<p><strong>联系人：</strong>' + (img.cname || '未填写') + '</p>';
        html += '<p><strong>联系电话：</strong>' + (img.cmobi || '未填写') + '</p>';
        html += '</div>';
    }
    
    html += '</div>';
    
    // 更新模态框内容
    const modalBody = document.querySelector('.modal-body');
    if (modalBody) {
        modalBody.innerHTML = html;
    }
}
</script>